package app.modules.menu.persistence.mapper;

import app.modules.menu.dto.biz.MenuFunctionRelationDTO;
import app.modules.security.dto.web.function.WebFunctionDTO;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import jasmine.security.rbac.model.SecMenuFunctionRelation;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author mh.z
 */
public interface MenuFunctionRelationMapper extends BaseMapper<SecMenuFunctionRelation> {

    /**
     * 返回指定菜单模板下的功能关联关系
     *
     * @param templateId
     * @return
     */
    List<MenuFunctionRelationDTO> listRelationsByTemplate(@Param("templateId") Long templateId);

    /**
     * 查询指定菜单的所有已分配功能
     *
     * @param menuId
     * @return
     */
    List<WebFunctionDTO> listAssignedFunctions(@Param("menuId") Long menuId);

    /**
     * 删除指定功能的所有菜单分配关系
     *
     * @param functionId
     */
    @InterceptorIgnore(tenantLine = "true")
    void deleteByFunctionId(@Param("functionId") Long functionId);

    /**
     * 查询指定用户已分配角色对应的菜单功能关系
     *
     * @param templateCode
     * @param userId
     * @return
     */
    List<SecMenuFunctionRelation> listByTemplateAndUser(@Param("templateCode") String templateCode,
                                                        @Param("userId") Long userId);
}
